home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / musictex / older-versions / musictex.502 / MUSICNFT.TEX < prev    next >
Text File  |  1994-03-20  |  29KB  |  808 lines

  1. %
  2. % This is MusicNFT from MusicTeX
  3. \message{Version 5.02 -- March 20th, 1994}%
  4. %
  5. % finding which class of fonts is normally used (cmxxx, dmxxx, dcxxx,...)
  6. \def\wordsplita#1#2#3.XX.{#1}%
  7. \def\wordsplitb#1#2#3.XX.{#2}%
  8. \rm
  9. \edef\fonthdg{\expandafter\wordsplita\fontname\the\font.XX.}%
  10. \edef\fonthdge{\expandafter\wordsplitb\fontname\the\font.XX.}%
  11.  %
  12. \font\cmmi=cmmi10 scaled \magstep1
  13. \font\cmbxbig=\fonthdg\fonthdge bx10 scaled \magstep2
  14. \font\cmbx=\fonthdg\fonthdge bx10 scaled \magstep1
  15. \font\cmbxsmall=\fonthdg\fonthdge bx10 
  16. \font\cmbxtiny=\fonthdg\fonthdge bx8
  17. \font\cmbxmicro=\fonthdg\fonthdge bx7
  18. \font\moyen=\fonthdg\fonthdge bx10 scaled \magstep1
  19. \font\cmex=cmex10
  20. \font\cmsy=cmsy10 scaled \magstep1
  21. \font\cmr=\fonthdg\fonthdge r10 scaled \magstep1
  22. \font\ttyeight=\fonthdg\fonthdge tt8
  23.  
  24.  
  25. \edef\catcodeat{\the\catcode`\@}\catcode`\@=11
  26. \edef\catcode@gt{\the\catcode`\>}\catcode`\>=12
  27. \edef\catcode@lt{\the\catcode`\<}\catcode`\<=12
  28.  
  29. %
  30. \let\@plainwlog=\wlog
  31. \def\wlog#1{}%
  32. %
  33. \font\musictwenty=musikn20
  34. \fontdimen35\musictwenty=0pt\relax
  35. \font\musicsixteen=musikn16
  36. \font\slurntwenty=slurn20
  37. \font\slurnsixteen=slurn16
  38. \font\musicthirteen=musikn13
  39. \font\musiceleven=musikn11
  40. \font\beamtwenty=beamn20
  41. \fontdimen50\beamtwenty=0pt\relax
  42. \font\beamsixteen=beamn16
  43. \font\beamthirteen=beamn13
  44. \font\beameleven=beamn11
  45. %
  46. \newif\ifcautionacc
  47. \cautionaccfalse
  48. %
  49. \def\q@u{\musicnfont\char33\hss}%
  50. \def\h@a{\musicnfont\char34\hss}%
  51. \def\w@h{\musicnfont\char35\hss}%
  52. \def\d@iamg{\musicnfont\char0\hss}%
  53. \def\d@iamw{\musicnfont\char127\hss}%
  54. \def\s@haker{\musicnfont\char79\hss}%
  55. \def\t@remolord{\musicnfont\char78\hss}%
  56. \def\c@arrg{\musicnfont\char1\hss}%
  57. \def\c@arpg{\musicnfont\char2\hss}%
  58. \def\c@arqg{\musicnfont\char3\hss}%
  59. \def\w@hq{\musicnfont\char 125\hss}%
  60. \def\s@bv{\musicnfont\char36\hss}%
  61. \def\b@rv{\musicnfont\char32\hss}%
  62. \def\c@upchar{39}%   offset to upper eighth hook
  63. \def\c@dnchar{44}%   offset to upper eighth hook
  64. %
  65.  %
  66. %
  67. \def\musicxx{\musicnorfont}%
  68. \def\slurnxx{\slurnorfont}%
  69. \def\slurnfont{\slurnorfont}%
  70. %
  71. \def\set@normalnotesize{\def\beamfont{\beamnorfont}%
  72. \def\musicnfont{\musicnorfont}%
  73. \def\i@nterbeam{0.75\Interligne}%
  74. \def\b@alkthick{0.24\Interligne}}
  75. %
  76. \def\set@smallnotesize{\def\beamfont{\beamsmallfont}%
  77. \def\musicnfont{\musicsmallfont}%
  78. \def\i@nterbeam{0.6\Interligne}%
  79. \def\b@alkthick{0.192\Interligne}}
  80. %
  81. \def\set@tinynotesize{\def\beamfont{\beamtinyfont}%
  82. \def\musicnfont{\musictinyfont}%
  83. \def\i@nterbeam{0.48\Interligne}%
  84. \def\b@alkthick{0.1536\Interligne}}
  85. %
  86. \set@normalnotesize
  87. %
  88. \def\qu@raise{\z@}%
  89. \def\ha@raise{\z@}%
  90. \def\wh@raise{\z@}%
  91. \def\zwq#1{\getn@i{#1}\def\n@fon{\zwq}\def\n@sym{\w@hq}\g@zw}%
  92. \def\zsb#1{\getn@i{#1}\def\n@fon{\zsb}\def\n@sym{\s@bv}\g@zsb}% semi-breve
  93. \def\zbv#1{\getn@i{#1}\def\n@fon{\zbv}\def\n@sym{\b@rv}\g@zbv}% breve
  94. \def\g@zbv{\n@raiseq
  95.   \h@lines{\bv@width}\def\s@tem{\resetstem}\plap@symss\fi}%
  96. \def\g@zsb{\n@raiseq
  97.   \h@lines{\sb@width}\def\s@tem{\resetstem}\plap@symss\fi}%
  98. %
  99. \newbox\ch@box
  100. \newdimen\lthick
  101. \global\lthick=0.4pt
  102. %\newdimen\qn@width
  103. %\newdimen\hn@width
  104. %\newdimen\wn@width
  105. %\newdimen\sb@width
  106. %\newdimen\bv@width
  107. \newdimen\qd@skip
  108. \newdimen\hd@skip
  109. \newdimen\wd@skip
  110. %
  111. \newcount\musicsize
  112. %
  113. \def\musickeyfont{\ifdim\internote<0.76\Internote\musictinyfont
  114. \else\ifdim\internote<0.95\Internote\musicsmallfont
  115.      \else\musicnorfont
  116.      \fi
  117. \fi}%
  118. %
  119. \def\meterfont{\ifdim\internote<0.76\Internote\metersmallfont
  120. \else\ifdim\internote<0.95\Internote\meternorfont
  121.      \else\meterbigfont
  122.      \fi
  123. \fi}%
  124. %
  125. \def\pointfont{\ifdim\internote<0.76\Internote\metertinyfont
  126. \else\ifdim\internote<0.95\Internote\metersmallfont
  127.      \else\meternorfont
  128.      \fi
  129. \fi}%
  130. %
  131. \def\computespecifics{\ifnum\musicsize=0\relax\musicsize=20\relax\fi
  132. \ifnum\musicsize=20\relax
  133.   \def\ppff{\ppfftwenty}%
  134.   \def\beamnorfont{\beamtwenty}\def\musicnorfont{\musictwenty}%
  135.   \def\beamsmallfont{\beamsixteen}\def\musicsmallfont{\musicsixteen}%
  136.   \def\beamtinyfont{\beamthirteen}\def\musictinyfont{\musicthirteen}%
  137.   \def\meternorfont{\cmbx}\def\metersmallfont{\cmbxsmall}%
  138.   \def\metertinyfont{\cmbxtiny}\def\slurnorfont{\slurntwenty}%
  139.   \def\meterbigfont{\cmbxbig}%
  140. \else
  141.   \def\ppff{\ppffsixteen}%
  142.   \def\beamnorfont{\beamsixteen}\def\musicnorfont{\musicsixteen}%
  143.   \def\beamsmallfont{\beamthirteen}\def\musicsmallfont{\musicthirteen}%
  144.   \def\beamtinyfont{\beameleven}\def\musictinyfont{\musiceleven}%
  145.   \def\meternorfont{\cmbxsmall}\def\metersmallfont{\cmbxtiny}%
  146.   \def\metertinyfont{\cmbxmicro}\def\slurnorfont{\slurnsixteen}%
  147.   \def\meterbigfont{\cmbx}%
  148. \fi
  149. \Interligne=\musicsize pt\divide\Interligne by 4\relax
  150. \Internote=0.5\Interligne
  151. \interbeam=\i@nterbeam
  152. \setbox\ch@box=\hbox{\w@h}\wn@width=\wd\ch@box
  153. \setbox\ch@box=\hbox{\s@bv}\sb@width=\wd\ch@box
  154. \setbox\ch@box=\hbox{\b@rv}\bv@width=\wd\ch@box
  155. \setbox\ch@box=\hbox{\c@arrg}\gr@width=\wd\ch@box
  156. \setbox\ch@box=\hbox{\h@a}\hn@width=\wd\ch@box
  157. \setbox\ch@box=\hbox{\q@u}\qn@width=\wd\ch@box
  158. \qd@skip=\qn@width\advance\qd@skip by -\hlthick
  159. \hd@skip=\hn@width\advance\hd@skip by -\hlthick
  160. \wd@skip=\wn@width\advance\wd@skip by -\hlthick
  161. }%
  162. \def\normalnotesize{\set@normalnotesize\computespecifics
  163.   \def\currentsize{\normalnotesize}}
  164. \def\smallnotesize{\set@smallnotesize\computespecifics
  165.   \def\currentsize{\smallnotesize}}
  166. \def\tinynotesize{\set@tinynotesize\computespecifics
  167.   \def\currentsize{\tinynotesize}}
  168. %
  169. %\check
  170. %
  171. \def\s@oupir{{\musicnfont\char"3E}}%
  172. %
  173.  %\newdimen\c@height
  174. \newcount\c@mult
  175. %\check
  176. \def\d@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le haut
  177. \advance\c@mult by \c@upchar\d@crg}%
  178. \def\d@gru{\c@mult=12\relax\d@crg}% queue de croche barree vers le haut
  179. \def\d@crg{\setbox\ch@box=\rlap{\musicnfont\char\c@mult}\c@height=\ht\ch@box
  180. \global\advance\st@top by \c@height
  181. \global\advance\st@top by \internote
  182.   \ifdim\st@top>\st@bot
  183.     \maxst@top
  184.     \global\advance\st@bot by -\altportee
  185.     \global\advance\st@top by -\altportee
  186.     \kern\stem@skip\vrule height\st@top depth -\st@bot width \lthick
  187.     \advance\st@top by -\c@height\raise\st@top\box\ch@box
  188.     \kern -\lthick \kern-\stem@skip    
  189.   \fi\resetstem}%
  190. %\check
  191. \def\p@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le bas
  192. \advance\c@mult by \c@dnchar\p@crg}%
  193. \def\p@gru{\c@mult=13\relax\p@crg}% queue de croche barree vers la bas
  194. \def\p@crg{\setbox\ch@box=\rlap{\kern \hlthick\musicnfont
  195.     \char\c@mult}\c@height=\ht\ch@box
  196. \global\advance\st@bot by -\internote
  197. \global\advance\st@bot by -\c@height
  198. \ifdim\st@top>\st@bot
  199.  \minst@bot
  200.  \global\advance\st@bot by -\altportee
  201.  \global\advance\st@top by -\altportee
  202.  \raise\st@bot\box\ch@box
  203.  \vrule height\st@top depth -\st@bot width \lthick
  204.  \kern -\lthick
  205. \fi \resetstem}%
  206. %
  207. % grace notes (croches barrees)
  208. \def\grcu#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcu}\n@raiseq
  209.   \h@linesqn\global\stem@skip=\qd@skip
  210.   \def\s@tem{\d@gru}\pl@symssq\fi}%
  211. \def\grcl#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcl}\n@raiseq    
  212.   \h@linesqn\def\s@tem{\p@gru}\pl@symssq\fi}%
  213. %
  214. %\check
  215. \def\s@harp{\musicnfont\char"34}\def\sh@raise{\z@}%
  216. \def\f@lat{\musicnfont\char"32}\def\fl@raise{\z@}%
  217. \def\n@at{\musicnfont\char"36}\def\na@raise{\z@}%
  218. \def\ds@harp{\musicnfont\char"35}%
  219. \def\df@lat{\musicnfont\char"33}%
  220. %
  221. \def\smalln@at{\cau@left\musicnfont\char"7C\cau@right}%
  222. \def\smallf@lat{\cau@left\musicnfont\char"78\cau@right}%
  223. \def\smalls@harp{\cau@left\musicnfont\char"7A\cau@right}%
  224. \def\smallds@harp{\cau@left\musicnfont\char"7B\cau@right}%
  225. \def\smalldf@lat{\cau@left\musicnfont\char"79\cau@right}%
  226. \def\cau@left{\ifcautionacc\raise-.45\Interligne
  227.      \hbox{\ttyeight(\kern -\lthick}\fi} 
  228. \def\cau@right{\ifcautionacc\raise-.45\Interligne
  229.      \hbox{\ttyeight\kern -\lthick)\kern -.2\Interligne}\fi\cautionaccfalse} 
  230. %
  231. \def\n@rpl@lap{\global\n@raise=\z@\pl@llap}%
  232. \def\bigsh#1{\inhgetn@i{#1}\n@rpl@lap{\s@harp}}%
  233. \def\smallsh#1{\inhgetn@i{#1}\n@rpl@lap{\smalls@harp}}%
  234. \def\csh{\cautionacctrue\smallsh}%
  235. \def\uppersh#1{\zcharnote{#1}{\raise3\internote
  236. \hbox to \qn@width{\hss\smalls@harp\hss}}}%
  237. %
  238. \def\bigdsh#1{\inhgetn@i{#1}\n@rpl@lap{\ds@harp}}%
  239. \def\smalldsh#1{\inhgetn@i{#1}\n@rpl@lap{\smallds@harp}}%
  240. \def\cdsh{\cautionacctrue\smalldsh}%
  241. %
  242. \def\bigna#1{\inhgetn@i{#1}\n@rpl@lap{\n@at}}%
  243. \def\smallna#1{\inhgetn@i{#1}\n@rpl@lap{\smalln@at}}%
  244. \def\cna{\cautionacctrue\smallna}%
  245. \def\upperna#1{\zcharnote{#1}{\raise3\internote
  246. \hbox to \qn@width{\hss\smalln@at\hss}}}%
  247. %
  248. \def\bigfl#1{\inhgetn@i{#1}\n@rpl@lap{\f@lat}}%
  249. \def\smallfl#1{\inhgetn@i{#1}\n@rpl@lap{\smallf@lat}}%
  250. \def\cfl{\cautionacctrue\smallfl}%
  251. \def\upperfl#1{\zcharnote{#1}{\raise3\internote
  252. \hbox to \qn@width{\hss\smallf@lat\hss}}}%
  253. %
  254. \def\bigdfl#1{\inhgetn@i{#1}\n@rpl@lap{\df@lat}}%
  255. \def\smalldfl#1{\inhgetn@i{#1}\n@rpl@lap{\smalldf@lat}}%
  256. \def\cdfl{\cautionacctrue\smalldfl}
  257. %
  258. \def\na#1{\ifdim\small@test\bigna{#1}\else\smallna{#1}\fi}%
  259. \def\fl#1{\ifdim\small@test\bigfl{#1}\else\smallfl{#1}\fi}%
  260. \def\sh#1{\ifdim\small@test\bigsh{#1}\else\smallsh{#1}\fi}%
  261. \def\dfl#1{\ifdim\small@test\bigdfl{#1}\else\smalldfl{#1}\fi}%
  262. \def\dsh#1{\ifdim\small@test\bigdsh{#1}\else\smalldsh{#1}\fi}%
  263. %
  264. %\check
  265. \def\b@adjust{\ifdim\y@ii>2.1\q@antum
  266. \multiply\q@antum by 2\relax\advance\b@char by 1\relax\fi
  267. }%
  268. \newcount\b@char
  269. \def\b@alkdefs{\b@char=0\relax
  270. \ifnum \b@p>0\relax\b@char=\b@p\relax\multiply\b@char by 6\relax
  271.   \advance\b@char by -6\relax\ifnum\b@char>54\relax\b@char=54\relax\fi\fi
  272. \ifnum \b@p<0\relax\b@char=-\b@p\relax\multiply\b@char by 6\relax
  273.   \advance\b@char by 58\relax\ifnum\b@char>118\relax\b@char=118\relax\fi\fi
  274. \q@antum=60pt\divide\q@antum by 32\relax\b@adjust
  275. \b@adjust
  276. \b@adjust
  277. \b@adjust
  278. \b@adjust
  279. \chardef\b@alk=\b@char}%
  280. %\check
  281. \def\s@lopdefs{\q@antum=60pt\divide\q@antum by 32\relax \def\s@lope{0.0}\relax
  282. \ifnum \b@p=1\relax\def\s@lope{0.05}\fi
  283. \ifnum \b@p>1\relax\b@char=\b@p\relax\multiply\b@char by 5\relax
  284.   \ifnum\b@char>50\relax\b@char=50\relax\fi
  285.   \edef\s@lope{0.\the\b@char}\fi
  286. \ifnum \b@p=-1\relax\def\s@lope{-0.05}\fi
  287. \ifnum \b@p<-1\relax\b@char=-\b@p\relax\multiply\b@char by 5\relax
  288.   \ifnum\b@char>50\relax\b@char=50\relax\fi
  289.   \edef\s@lope{-0.\the\b@char}\fi
  290. }%
  291. %\check
  292. \def\p@outre{%    \y@ii : longueur,   \b@p : pente,  \y@i : altitude
  293. \ifnum \b@p=0\relax
  294.   \y@iii=\y@i\y@iv=\y@i
  295.   \advance\y@iii by -\b@alkthick
  296.   \advance\y@iv by \b@alkthick
  297.   \vrule height \y@iv depth -\y@iii  width \y@ii
  298. %  \raise  \y@i\hbox{\vrule height \b@alkthick depth \b@alkthick
  299. %      width \y@ii}
  300. \else\b@alkdefs\beamfont
  301.   \global\y@iv=\z@
  302.   \loop\ifdim\y@iv<\y@ii
  303.     {\y@v=\y@ii\advance\y@v by -\y@iv
  304.     \advance\y@v by -\q@antum
  305.     \y@iii=\y@i
  306.     \advance\y@iii by \s@lope\y@iv
  307.     \ifdim\y@v<\z@\advance\y@iii by \s@lope\y@v\hskip\y@v\fi
  308.     \raise\y@iii\hbox to \q@antum{\b@alk\hss}\global\advance\y@iv by \q@antum
  309.     }\repeat
  310. \fi
  311. }%
  312. %\check
  313. \def\clefdefasymbol{\hbox to 3.2\Interligne{\musickeyfont
  314.      \kern -0.8\internote\hss\char"49\hss}}%
  315. \def\smallclefdefa{\hbox to 2.8\Interligne{\musickeyfont
  316.      \kern -0.64\internote\hss\char"4A\hss}}%
  317. %\check
  318. \def\clefdesolsymbol{\hbox to 3.2\Interligne{\musickeyfont
  319.      \kern -1.2\internote\hss\char"47\hss}}%
  320. \def\smallclefdesol{\hbox to 2.8\Interligne{\musickeyfont
  321. \kern -0.96\internote\hss\char"48\hss}}%
  322. %\check
  323. \def\clefdutsymbol{\hbox to 3.2\Interligne{\musickeyfont
  324.    \kern -0.8\internote\hss\char"4B\hss}}%
  325. \def\smallclefdut{\hbox to 2.8\Interligne{\musickeyfont
  326.    \kern -0.64\internote\hss\char"4C\hss}}%
  327. \def\gclefdut{\hbox to 3.2\Interligne{\musickeyfont
  328.    \kern 0.4\internote\hss\char"04\hss}}%
  329. \def\drumclefsymbol{\hbox to 3.2\Interligne{\musickeyfont
  330.    \kern 0.4\internote\hss\char"4D\hss}}%
  331. %
  332. \def\allabreve{{\kern \internote\musickeyfont\char"52}}%
  333. \def\meterC{{\kern \internote\musickeyfont\char"53}}%
  334. %
  335. \def\d@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"3F}}%
  336. \def\q@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"40}}%
  337. \def\h@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"41}}%
  338. \def\s@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"42}}%
  339. \def\p@orgue{\hbox{\kern -0.5\hn@width\musicnfont\char"50}}%
  340. \def\p@urgue{\hbox{\kern -0.5\hn@width\musicnfont\char"51}}%
  341. \def\trille#1{\hbox to #1{\leaders\hbox{\musicnfont\char"64}\hfill}}%
  342. \def\Trille#1{\hbox to #1{\it tr\leaders\hbox{\musicnfont\char"64}\hfill}}%
  343. %
  344. % Gregorian notes
  345. %
  346. \def\diamg#1{\getn@i{#1}\def\n@fon{\diamg}\def\n@sym{\d@iamg}\g@diamg}%
  347. \def\zdiamg#1{\getn@i{#1}\def\n@fon{\diamg}\def\n@sym{\d@iamg}\rlap{\g@diamg}}%
  348. \def\diamw#1{\getn@i{#1}\def\n@fon{\diamw}\def\n@sym{\d@iamw}\g@diamg}%
  349. \def\zdiamw#1{\getn@i{#1}\def\n@fon{\diamw}\def\n@sym{\d@iamw}\rlap{\g@diamg}}%
  350. \def\shaker#1{\charnote{#1}{\s@haker}}%
  351. \def\zshaker#1{\zcharnote{#1}{\s@haker}}%
  352. \def\tremolord#1{\charnote{#1}{\t@remolord}}%
  353. \def\ztremolord#1{\zcharnote{#1}{\t@remolord}}%
  354. \def\carrg#1{\getn@i{#1}\def\n@fon{\carrg}\def\n@sym{\c@arrg}\g@diamg}%
  355. \def\zcarrg#1{\getn@i{#1}\def\n@fon{\carrg}\def\n@sym{\c@arrg}\rlap{\g@diamg}}%
  356. \def\carqg#1{\getn@i{#1}\def\n@fon{\carqg}\def\n@sym{\c@arqg}\g@diamg}%
  357. \def\zcarqg#1{\getn@i{#1}\def\n@fon{\carqg}\def\n@sym{\c@arqg}\rlap{\g@diamg}}%
  358. \def\carpg#1{\getn@i{#1}\def\n@fon{\carpg}\def\n@sym{\c@arpg}\g@diamg}%
  359. \def\zcarpg#1{\getn@i{#1}\def\n@fon{\carpg}\def\n@sym{\c@arpg}\rlap{\g@diamg}}%
  360. %
  361. \def\g@diamg{\advancetrue\g@diam}%
  362. \def\g@diam{\global\n@raise=\wh@raise\ifnum\n@i<100\relax
  363.   \h@lines{\gr@width}\def\s@tem{\resetstem}\pl@symssq\fi}%
  364.  %\check
  365. %
  366. % arpeges
  367. %
  368. \def\arpegesym#1{\hbox to \Interligne{\kern -1.2\Interligne
  369. \vbox to #1{\parindent=\z@
  370. \offinterlineskip\ifdim #1>4\Interligne\Arp@elem\fi\hrule
  371. \cleaders\arp@elem\vfill\kern -\interligne}\hss}}%
  372. \def\arp@elem{\vbox to \Interligne{\vss\musicnorfont\char"5A}}%
  373. \def\Arp@elem{\vbox to 4\Interligne{\vss\musicnorfont\char"5D}}%
  374. %
  375. \def\arpeggio#1#2{\zcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
  376. \musicnorfont\chardef\arp@el=\n@iii\relax\arp@el}\qsk}%
  377. \def\larpeggio#1#2{\lcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
  378. \musicnorfont\chardef\arp@el=\n@iii\relax\arp@el\kern -0.3\qn@width}\qsk}%
  379. %
  380. %
  381. % This skip aligns some ornaments which appear not to be centred precisely
  382. % on the notes
  383. \def\o@skp{\kern-.5\hd@skip}
  384. \def\mordant#1{\zcharnote{#1}{\musicnfont\char 89}}%
  385. \def\pince#1{\zcharnote{#1}{\musicnfont\char 87}}%
  386. \def\Pince#1{\zcharnote{#1}{\musicnfont\char 88}}%
  387. \def\Lpince#1{\zcharnote{#1}{\musicnfont\char 7}}%
  388. \def\Pincesw#1{\zcharnote{#1}{\musicnfont\char 11}}%
  389. \def\Pincenw#1{\zcharnote{#1}{\musicnfont\char 10}}%
  390. \def\Pincene#1{\zcharnote{#1}{\musicnfont\char 9}}%
  391. % \turn p      makes a turn             symbol at pitch p, causing no space
  392. % \backturn p  makes a backward turn    symbol at pitch p, causing no space
  393. % \coda p      makes a coda             ...
  394. % \segno p     makes the special "S"    ...
  395. \def\turn#1{\zcharnote{#1}{\o@skp\musicnfont\char"44}}
  396. \def\backturn#1{\zcharnote{#1}{\o@skp\musicnfont\char"43}}
  397. \def\coda#1{\zcharnote{#1}{\o@skp\musicnorfont\char"55}}
  398. \def\segno#1{\zcharnote{#1}{\o@skp\musicnorfont\char"56}}
  399. %
  400. \def\sforz#1{{\advance\transpose by -2\usf{#1}}}%
  401. \def\pz#1{{\advance\transpose by -2\upz{#1}}}%
  402. \def\ppz#1{\uppz{#1}}%
  403. \def\st#1{{\advance\transpose by -2\ust{#1}}}%
  404. %
  405. \def\usf#1{\zcharnote{#1}{\musicnfont\char 30}}%
  406. \def\lsf#1{\zcharnote{#1}{\musicnfont\char 31}}%
  407. \def\ust#1{\zcharnote{#1}{\musicnfont\char 26}}%
  408. \def\lst#1{\zcharnote{#1}{\musicnfont\char 27}}%
  409. \def\upz#1{\zcharnote{#1}{\musicnfont\char 24}}%
  410. \def\lpz#1{\zcharnote{#1}{\musicnfont\char 25}}%
  411. \def\uppz#1{\zcharnote{#1}{\musicnfont\char 28}}%
  412. \def\lppz#1{\zcharnote{#1}{\musicnfont\char 29}}%
  413. %
  414. % placement des accents au-dessus de poutres et non de tetes de notes
  415. \def\acc@balk{\global\stem@skip=\z@  %
  416. \y@ii=\b@z                     % a augmenter avec la pente
  417. \y@v=\locx@skip\advance\y@v by \stem@skip\advance\y@v by -\b@x
  418. \advance\y@ii by \s@lope\y@v
  419. \advance\y@ii by -\altportee
  420. \raise\y@ii\rlap{\kern\stem@skip\balk@accent}}%
  421. %\check
  422. \def\busf#1{\def\balk@accent{\musicnfont\char 30}\selectpoutre{#1}\acc@balk}%
  423. \def\blsf#1{\def\balk@accent{\musicnfont\char 31}\selectpoutre{#1}\acc@balk}%
  424. \def\bust#1{\def\balk@accent{\musicnfont\char 26}\selectpoutre{#1}\acc@balk}%
  425. \def\blst#1{\def\balk@accent{\musicnfont\char 27}\selectpoutre{#1}\acc@balk}%
  426. \def\bupz#1{\def\balk@accent{\musicnfont\char 24}\selectpoutre{#1}\acc@balk}%
  427. \def\blpz#1{\def\balk@accent{\musicnfont\char 25}\selectpoutre{#1}\acc@balk}%
  428. \def\buppz#1{\def\balk@accent{\musicnfont\char 28}\selectpoutre{#1}\acc@balk}%
  429. \def\blppz#1{\def\balk@accent{\musicnfont\char 29}\selectpoutre{#1}\acc@balk}%
  430. %
  431. % soufflets crescendo et decrescendo
  432. %
  433. \def\dimin{{\musicnorfont\char"10}}%
  434. \def\Dimin{{\musicnorfont\char"11}}%
  435. \def\DImin{{\musicnorfont\char"12}}%
  436. \def\DIMin{{\musicnorfont\char"13}}%
  437. \def\cresc{{\musicnorfont\char"14}}%
  438. \def\Cresc{{\musicnorfont\char"15}}%
  439. \def\CResc{{\musicnorfont\char"16}}%
  440. \def\CREsc{{\musicnorfont\char"17}}%
  441. %
  442. % colons for repeats (:| |: :||:)
  443. %
  444. %\check
  445. \def\w@coli{\selectinstr{\p@loop\raise\altportee
  446.   \hbox to \z@{\hss\musickeyfont\char 126\hss}\n@portee\repeat}}%
  447. %
  448. % long pauses
  449. %
  450. \def\PAuse{\hbox to \noteskip{\musicnorfont\char"3A\hss}\advance\locx@skip
  451.  by \noteskip}%
  452. \def\PAUSe{\hbox to \noteskip{\musicnorfont\char"3B\hss}\advance\locx@skip
  453.  by \noteskip}%
  454. \def\expause#1{\charnote{#1}{\musicnorfont\char 5\hss}} 
  455. \def\zexpause#1{\zcharnote{#1}{\musicnorfont\char 5\hss}} 
  456. \def\exhpause#1{\charnote{#1}{\musicnorfont\char 6\hss}} 
  457. \def\zexhpause#1{\zcharnote{#1}{\musicnorfont\char 6\hss}} 
  458. %
  459. % special song system left begins
  460. %
  461. \def\type@songsymbols{\raise\lowersongalt\llap{\musicnorfont\char 15}%
  462. \advance\lowersongalt by \uppersongalt
  463. \advance\lowersongalt by -\hlthick
  464. \raise\lowersongalt\llap{\musicnorfont\char 14}}
  465. %
  466. %
  467. % horizontal upper slur offset by #2 noteheads, total width #1
  468. %
  469. \def\h@uslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width
  470. \global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs
  471. \ifdim\wd\ch@box>\y@v
  472.   \global\n@iii=0\relax
  473.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  474.   \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax
  475.   \repeat
  476.   \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}%
  477. \else
  478.   \global\n@iii=79\relax
  479.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  480.   \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax
  481.   \repeat
  482.   \hbox to #1{\kern #2\hn@width\y@iv=\ht\ch@box\y@iii=-\ht\ch@box
  483.   \advance\y@iii by \t@y
  484.   \slurnorfont\char\n@iii
  485.   \leaders\hrule height \y@iv depth \y@iii\hfill
  486.   \advance\n@iii by 16\relax \char\n@iii}%
  487. \fi}
  488. %
  489. % horizontal lower slur offset by #2 noteheads, total width #1
  490. %
  491. \def\h@dslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width
  492. \global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs
  493. \ifdim\wd\ch@box>\y@v
  494.   \global\n@iii=32\relax
  495.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  496.   \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax
  497.   \repeat
  498.   \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}%
  499. \else
  500.   \global\n@iii=111\relax
  501.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  502.   \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax
  503.   \repeat
  504.   \hbox to #1{\kern #2\hn@width\y@iv=\dp\ch@box\y@iii=-\dp\ch@box
  505.   \advance\y@iii by \t@y
  506.   \slurnorfont\char\n@iii
  507.   \leaders\hrule height \y@iii depth \y@iv\hfill
  508.   \advance\n@iii by 16\relax \char\n@iii}%
  509. \fi}
  510. %
  511. % sames without offsets
  512. %
  513. \def\hdslur#1{\h@dslur {#1}0}
  514. \def\huslur#1{\h@uslur {#1}0}
  515. %
  516. % noter un debut de tenue
  517. %
  518. \def\ITenu#1{\selecttenue{#1}\I@tenu{70}}%
  519. \def\Ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  520. \I@tenu{70}{#2}}}%
  521. \def\Itenu#1{\selecttenue{#1}\I@tenu{66}}%
  522. \def\ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  523. \I@tenu{66}{#2}}}%
  524. \def\ITenl#1{\selecttenue{#1}\I@tenl{102}}%
  525. \def\Ilegl#1#2{\selecttenue{#1}\advance\locx@skip by -1.5\qn@width
  526. \I@tenl{102}{#2}\advance\locx@skip by 1.5\qn@width}%
  527. \def\Itenl#1{\selecttenue{#1}\I@tenl{98}}%
  528. \def\ilegl#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  529. \I@tenl{98}{#2}}}%
  530. %
  531. \def\I@tenall{\global\t@s=1\relax % etat en cours
  532.   \global\t@x=\locx@skip
  533.   \global\advance\t@x by 0.8\qd@skip
  534.   \global\t@y= 0.15\Interligne
  535.   \pl@base\global\t@z=\y@i\global\advance\t@z by\altportee
  536.   \setbox\ch@box=\hbox{\L@slur}}%
  537. %
  538. \def\I@tenu#1#2{\global\t@p=1\relax % sens=1
  539.   \global\t@w=#1\relax
  540.   \inhgetn@i{#2}%
  541.   \I@tenall
  542.   \global\advance\t@z by \ht\ch@box
  543.   \global\advance\t@z by 0.24\Interligne
  544.   \global\advance\t@z by -\t@y
  545.   \up@tenbox}%
  546. %
  547. \def\I@tenl#1#2{\global\t@p=-1\relax % sens= -1
  548.   \global\t@w=#1\relax
  549.   \inhgetn@i{#2}%
  550.   \I@tenall
  551.   \global\advance\t@z by -\dp\ch@box
  552.   \global\advance\t@z by -0.24\Interligne
  553.   \up@tenbox}%
  554.  
  555. \def\Invertslur#1{\selecttenue{#1}\global\t@p=-\t@p
  556. \ifnum\t@w>63\relax
  557.  \ifnum\t@w<96\global\advance\t@w by 32\relax
  558.  \else\global\advance\t@w by -32\fi
  559. \fi}
  560.  
  561.  
  562. %
  563. %\check
  564. %
  565. \def\Tten{\tten}%
  566. \def\Tleg{\tleg}%
  567. %  
  568. \def\t@ten{\y@i=\t@z\advance\y@i by -\altportee
  569. \y@ii=\locx@skip\advance\y@ii by -\t@x
  570. \ifnum\t@w=0\relax\else\advance\y@ii by 0.4\qd@skip\fi
  571. \ifnum\t@p>0\relax
  572.   \ifnum\t@s=2\relax
  573.     \raise\y@i\llap{\ifnum\t@w=0\relax
  574.                       \up@rleg\else
  575.                       \Up@rleg\kern -0.2\qd@skip\fi}%
  576.   \else
  577.     \raise\y@i\llap{\ifnum\t@w=0\relax
  578.                       \up@leg\else
  579.                       \Up@leg\kern -0.2\qd@skip\fi}%
  580.   \fi
  581. \else
  582.   \ifnum\t@s=2\relax
  583.     \raise\y@i\llap{\ifnum\t@w=0\relax
  584.                       \lo@rleg\else
  585.                       \Lo@rleg\kern -0.2\qd@skip\fi}%
  586.   \else
  587.     \raise\y@i\llap{\ifnum\t@w=0\relax
  588.                       \lo@leg\else
  589.                       \Lo@leg\kern -0.2\qd@skip\fi}%
  590.   \fi
  591. \fi
  592. \global\t@w=0\relax
  593. \global\t@s=0\relax
  594. \@uptenubox}%
  595. %
  596. %
  597. \def\L@slur{\slurnorfont\char\t@w}%
  598. \def\R@slur{\global\advance\t@w by 16\slurnorfont\char\t@w}%
  599. \newdimen\slur@off
  600. \newdimen\slur@maxlen
  601. %
  602. \def\leg@hrule{\leaders\hrule height \t@y\hfill}%
  603. %
  604. % complete slur of length #1 (up and down)
  605. \def\Up@leg{%    longueur \y@ii
  606. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box 
  607.   \advance\slur@off by -\t@y
  608.   \ifdim \y@ii>2\wd\ch@box
  609.     \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}%
  610.   \else
  611.     \raise -\slur@off\hbox{\huslur{\y@ii}}%
  612.   \fi}}%
  613. %
  614. \def\Lo@leg{%    longueur \y@ii
  615. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box 
  616.   \advance\slur@off by -0.3\t@y
  617.   \ifdim \y@ii>2\wd\ch@box
  618.     \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}%
  619.   \else
  620.     \raise -\slur@off\hbox{\hdslur{\y@ii}}%
  621.   \fi}}%
  622. %
  623. % slur termination of length #1 (up and down)
  624. \def\Up@rleg{%    longueur \y@ii
  625. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box %
  626.   \advance\slur@off by -\t@y
  627.   \ifdim \y@ii>\wd\ch@box\leg@hrule
  628.   \else\hss\fi  \raise -\slur@off\hbox{\R@slur}}}%
  629. %
  630. \def\Lo@rleg{%    longueur \y@ii
  631. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box %   
  632.   \advance\slur@off by -0.3\t@y
  633.   \ifdim \y@ii>\wd\ch@box\leg@hrule
  634.   \else\hss\fi  \raise -\slur@off\hbox{\R@slur}}}%
  635. %
  636. %\check
  637. %
  638. % slur beginning (left) (up and down)
  639. \def\Up@les{%    longueur \y@ii
  640. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box
  641.   \advance\slur@off by -\t@y
  642.   \UpLo@les}}%
  643. %
  644. %\check
  645. %
  646. \def\Lo@les{%    longueur \y@ii
  647. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box
  648.   \advance\slur@off by -0.3\t@y
  649.   \UpLo@les}}%
  650. %
  651. %\check
  652. %
  653. \def\UpLo@les{\raise -\slur@off\hbox{\L@slur}%
  654.   \advance\y@ii by -\wd\ch@box
  655.   \ifdim \y@ii>\z@\leg@hrule
  656.   \else\hss
  657. %    \ifdim\y@ii<-.8\p@ \vrule height 1cm\fi
  658.   \fi}%
  659. %\check
  660. %
  661. \def\c@ten{%\rlap{\vrule height 1cm}
  662.      \y@ii=\x@skip\advance\y@ii by -\t@x
  663.      \global\t@x=-.8\p@  %<--
  664.      \ifnum\t@s=1\relax
  665.        \ifnum\t@w=0\relax
  666.            \ifnum\t@p>0\relax
  667.            \raise\t@z\llap{\up@les}\else
  668.            \raise\t@z\llap{\lo@les}\fi
  669.        \else
  670.            \ifnum\t@p>0\relax
  671.            \raise\t@z\llap{\Up@les}\else
  672.            \raise\t@z\llap{\Lo@les}\fi
  673.        \fi    
  674.      \else
  675.        \ifnum\t@s=2\relax
  676.          \slur@off=\t@z
  677.          \advance\slur@off by \t@y
  678. %         \advance\slur@off by 3\p@
  679.          \kern -\y@ii\vrule height \slur@off depth -\t@z width \y@ii
  680.        \fi
  681.      \fi
  682.      \global\t@s=2\relax            
  683. }%
  684. %
  685. \def\n@skmb{\nobreak\global\slur@maxlen=\z@
  686. % compute the maximum length of slurs to be handled
  687.   \ten@loop
  688.      \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur
  689.                            \else\L@slur\fi}\ifdim\slur@maxlen<\wd\ch@box
  690.      \global\slur@maxlen=\wd\ch@box\fi
  691.      \global\advance\n@l by 1\relax
  692.   \repeat
  693. % compute the maximum excess length of beginning slurs  
  694.   \global\slur@off=\z@
  695.   \ten@loop
  696.      \y@ii=\x@skip\advance\y@ii by \n@skip\advance\y@ii by -\t@x
  697.      \advance\y@ii by -\slur@maxlen
  698.      % \y@ii is the length that will be given to \c@ten for that slur/tie
  699.      % assuming \slur@maxlen left offset...
  700.      \ifnum\t@s=1\relax
  701.        \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur\else\L@slur\fi}%
  702.            {\advance\y@ii by -\wd\ch@box
  703.             \ifdim\y@ii<\slur@off \global\slur@off=\y@ii\fi}%
  704.      \fi
  705.      \global\advance\n@l by 1\relax
  706.   \repeat
  707.   \global\advance\slur@maxlen by \slur@off
  708. %
  709.   \nobreak\global\advance\n@skip by -\slur@maxlen}%
  710. \def\skip@b{\hskip \slur@maxlen
  711.    \global\advance\x@skip by\slur@maxlen}% %
  712.  
  713.  %
  714. %
  715. %\check
  716. %
  717. % symboles slurn20 des liaisons et tenues
  718. %
  719. \newcount\t@wi
  720. \newcount\t@wii
  721. \newcount\t@wiii
  722. \newcount\t@wiv
  723. \newcount\t@wv
  724. \newcount\t@wvi
  725. %
  726. \let\wlog=\@plainwlog
  727. %
  728. \def\k@ii{\fontdimen 8\musictwenty}
  729. \def\k@iii{\fontdimen 9\musictwenty}
  730. \def\k@iiii{\fontdimen 10\musictwenty}
  731. \def\k@iiv{\fontdimen 11\musictwenty}
  732. \def\k@iv{\fontdimen 12\musictwenty}
  733. \def\k@ivi{\fontdimen 13\musictwenty}
  734. \def\k@ivii{\fontdimen 14\musictwenty}
  735. \def\k@iviii{\fontdimen 15\musictwenty}
  736. \def\k@iix{\fontdimen 16\musictwenty}
  737. %
  738. \def\internotei{\fontdimen 17\musictwenty}
  739. \def\internoteii{\fontdimen 18\musictwenty}
  740. \def\internoteiii{\fontdimen 19\musictwenty}
  741. \def\internoteiv{\fontdimen 20\musictwenty}
  742. \def\internotev{\fontdimen 21\musictwenty}
  743. \def\internotevi{\fontdimen 22\musictwenty}
  744. \def\internotevii{\fontdimen 23\musictwenty}
  745. \def\internoteviii{\fontdimen 24\musictwenty}
  746. \def\internoteix{\fontdimen 25\musictwenty}
  747. \def\c@height{\fontdimen 26\musictwenty}
  748. %
  749. \def\qn@width{\fontdimen 27\musictwenty}
  750. \def\hn@width{\fontdimen 28\musictwenty}
  751. \def\wn@width{\fontdimen 29\musictwenty}
  752. \def\sb@width{\fontdimen 30\musictwenty}
  753. \def\bv@width{\fontdimen 31\musictwenty}
  754. \def\gr@width{\fontdimen 32\musictwenty}
  755. %
  756. \def\clef@skip{\fontdimen 28\beamtwenty}
  757. \def\nullthick{\fontdimen 29\beamtwenty}
  758. \def\bbbb@xi{\fontdimen 30\beamtwenty}
  759. \def\bbbb@xii{\fontdimen 31\beamtwenty}
  760. \def\bbbb@xiii{\fontdimen 32\beamtwenty}
  761. \def\bbbb@xiv{\fontdimen 33\beamtwenty}
  762. \def\bbbb@xv{\fontdimen 34\beamtwenty}
  763. \def\bbbb@xvi{\fontdimen 35\beamtwenty}
  764. \def\bbbb@xvii{\fontdimen 36\beamtwenty}
  765. \def\bbbb@xviii{\fontdimen 37\beamtwenty}
  766. \def\bbbb@xix{\fontdimen 38\beamtwenty}
  767. \def\bbbb@xx{\fontdimen 39\beamtwenty}
  768. %
  769. \def\bbbbb@xi{\fontdimen 40\beamtwenty}
  770. \def\bbbbb@xii{\fontdimen 41\beamtwenty}
  771. \def\bbbbb@xiii{\fontdimen 42\beamtwenty}
  772. \def\bbbbb@xiv{\fontdimen 43\beamtwenty}
  773. \def\bbbbb@xv{\fontdimen 44\beamtwenty}
  774. \def\bbbbb@xvi{\fontdimen 45\beamtwenty}
  775. \def\bbbbb@xvii{\fontdimen 46\beamtwenty}
  776. \def\bbbbb@xviii{\fontdimen 47\beamtwenty}
  777. \def\bbbbb@xix{\fontdimen 48\beamtwenty}
  778. \def\bbbbb@xx{\fontdimen 49\beamtwenty}
  779.  
  780. % this macro sets the new big (piano) braces (due to Andreas Egler)
  781. %  !!! Attention !!!
  782. % there is no checking of 
  783. % too small or large dimensions
  784. %
  785. \font\musext=musicbra
  786. \newcount\selbrace
  787. \def\mult@portee{\y@ii=\nbportees\interportee
  788.     \advance\y@ii by -\Interportee
  789.     \advance\y@ii by \nbportees\lthick
  790.     \advance\y@ii by -2\lthick
  791. %    
  792.     \selbrace=\y@ii\relax\select@brace%
  793.     \divide\y@ii by 2\raise\y@\llap{%
  794.     \raise\y@ii\llap{\musext\char\selbrace%
  795.     \kern.5\Interligne}}}%
  796. %
  797. \def\select@brace{\divide\selbrace by 65536%
  798. \advance\selbrace by -40\divide\selbrace by 2}%
  799. % dim to count means 1pt -> 65536 sp
  800. % 40 pt is the length of the smallest brace
  801. % the next brace is 2pt larger
  802.  
  803.  
  804. \catcode`\>=\catcode@gt
  805. \catcode`\<=\catcode@lt
  806. \catcode`\@=\catcodeat
  807.  
  808.